#pragma once

#include <vector>

using namespace std;

class Game;
class BaseState;
class GameplayState;

class StateManager
{
public:
	StateManager();
	~StateManager();

	void Initialize(Game * game);
	void Shutdown(void);
	bool Input(void);
	void Update(float elapsedTime);

	void PushState(BaseState * state);
	void PopState(void);
	void ChangeState(BaseState * state);
	void ClearStack(void);

private:
	
	Game * game;

	vector<BaseState *> stack;

};

